<?php


namespace app\common\validate\merchant;


use yiqiniu\extend\validate\YqnValidate;

/**
 * 系统角色
 * Class MerchantRoles
 * @package app\common\validate\merchant
 */
class MerchantRolesValid extends YqnValidate
{

    /**
     *  字段：'id'，    类型：'bigint',    是否为空：1,    说明：
     *  字段：'mer_id'，    类型：'character varying(20)',    是否为空：1,    说明：所属商户,0系统创建,不可删除
     *  字段：'title'，    类型：'character varying(30)',    是否为空：,    说明：角色名称
     *  字段：'data_permission'，    类型：'integer',    是否为空：,    说明：数据权限
     *  字段：'description'，    类型：'character varying(200)',    是否为空：,    说明：角色描述
     *  字段：'is_sys'，    类型：'smallint',    是否为空：,    说明：是否系统创建  1 系统创建 0商户创建
     *  字段：'op_user'，    类型：'integer',    是否为空：1,    说明：操作人
     *  字段：'create_at'，    类型：'timestamp(0) without time zone',    是否为空：1,    说明：创建时间
     *  字段：'update_at'，    类型：'timestamp(0) without time zone',    是否为空：,    说明：更新时间
     */

    /**
     *  验证规则
     */
    protected $rule = [
        'id' => 'require|number',
        'mer_id' => 'require',
        'title' => 'require',
        'data_permission' => 'number',
        'is_sys' => 'number',
        'op_user' => 'require|number',
        'create_at' => 'require|date',
        'update_at' => 'date',
        "menus" => 'require|array',
    ];

    /**
     * 定义错误信息
     * 格式：'字段名.规则名'    =>    '错误信息'
     *
     * @var array
     */
    protected $message = [
        'id.require' => '不能为空',
        'id.number' => '只能为数字类型',
        'id.dbExists' => '信息不存在',
        'mer_id.require' => '所属商户,0系统创建,不可删除不能为空',
        'data_permission.number' => '数据权限只能为数字类型',
        'is_sys.number' => '是否系统创建只能为数字类型',
        'title.require' => '角色名称不能为空',
        'op_user.require' => '操作人不能为空',
        'op_user.number' => '操作人只能为数字类型',
        'create_at.require' => '创建时间不能为空',
        'create_at.date' => '创建时间只能为日期类型',
        'update_at.date' => '更新时间只能为日期类型',
        'menus.require' => '角色权限功能不能为空',
        'menus.array' => '角色菜单权限格式只能为数组格式',
    ];

    //验证场景
    protected $scene = [
        'create' => ['title', 'data_permission', 'menus'],
        'edit' => ['id', 'title', 'data_permission', 'menus'],
    ];

    public function sceneInfo(){
        return $this->only(['id'])->remove('id','require')
            ->append('id', 'dbExists:system_roles,id');
    }
}
